package com.teamone.etl.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;

/**
 * @Description 脱敏工具类
 * @Author WangZhuoRan
 * @Date 2021-01-12 18:54
 */
public class DesensitizationUtil {

    private static final Pattern P = Pattern.compile("[\u4e00-\u9fa5]");
    /**
     * 中文名字：只展示姓名第一个字
     * 身份证号：年月日脱敏，前6后4不脱敏
     * 手机号：前三后四不脱敏，中间脱敏
     * 银行卡：前6位和后4位不脱敏，中间脱敏
     */
    public static String replaceStr(String param) {
        if(StringUtils.isEmpty(param)){
            return "";
        }
        int len=param.length();
        if(isContainChinese(param)){
            return param.replaceAll("(.{1})(.*)(.{0})", "$1" + "**" + "$3");
        }
        return param.replaceAll("(.{"+(len<12?3:6)+"})(.*)(.{4})", "$1" +"****" + "$3");
    }

    /**
     判断是否含中文
     @param str 传入要脱敏的字符串
     @return 是/否 true/false
     */
    public static boolean isContainChinese(String str) {
        Matcher m = P.matcher(str);
        return m.find();
    }

}
